//
// Description: 5840. 使字符串平衡的最小交换次数
// Created by Loading on 2021/8/8.
//

#include <bits/stdc++.h>

using namespace std;

int minSwaps(string s) {
    // 表示左括号比右括号多出的数量
    int cnt = 0;
    // 需要交换的次数
    int res = 0;
    for (auto &c : s) {
        if (c == '[') {
            ++cnt;
        } else {
            --cnt;
            /* 此时需要交换，交换完毕后左括号比右括号多 1 */
            if (cnt < 0) {
                ++res;
                cnt += 2; // 此时 cnt = 1
            }
        }
    }

    return res;
}

int main() {
    string s = "]]]][[][[][[[]]][[]][[[[][]]][[]]]]]][]][[][][[]][][[]]]][[[[[[[";
    cout << minSwaps(s) << endl;
}